package com.annotation.importannotation;

import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;

import java.util.Set;

//实现spring的ImportSelector接口，重写selectImports方法，方法的返回值是一个String数组，数组中包含的全类名会被注册到容器中
//容器中最终注册的组建是返回的全类名，而当前的MyImportSeletor不会被导入到容器中
public class MyImportSeletor implements ImportSelector {

    //AnnotationMetadata:当前标注了@Import注解的类的所有注解信息
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        //获取当前标注了@Import的类的所有注全类名
        Set<String> annotationTypes = importingClassMetadata.getAnnotationTypes();
        for (String annotationType : annotationTypes) {
            System.out.println(annotationType);
        }
        String[] strs = {"com.annotation.entities.Blue","com.annotation.entities.Yellow"};
        //这里可以返回一个空数组，但是不要返回null，否则在spring底层会获取数组的长度，返回null程序会报空指针异常
        return strs;
    }
}
